SuperContra: Cross-Language, Cross-Runtime Lightweight Contracts As a Service
نویسندگان
چکیده
Despite the potential of Design-by-Contract (DbC) for increasing the reliability and robustness of software, it has to date experienced only limited use. One reason for this, is that each DbC solution targets a single language (or language run-time) and thus employs different syntax and implementations for specifying contracts for each. Given that modern applications increasingly employ multiple components, each written in multiple programming languages, writing contracts imposes significant burden on programmers. To reduce this overhead and to encourage greater use of DbC as part of both testing and production systems, we present a new DbC framework called SuperContra that implements and enforces lightweight contracts across different programming systems, as-a-service. SuperContra is unique in that developers employ a familiar, high-level language to write contracts regardless of the programming language used to implement the component under test. Moreover, contract evaluation occurs as-a-service, as opposed to at each client, simplifying clients and facilitating multi-client contract auditing. We evaluate SuperContra using widely used, open-source software and compare its performance against existing DbC frameworks. Our results show that SuperContra performs on par with non-service-based DbC approaches and in some cases similarly to code running without contracts.
منابع مشابه
Preliminary Results Towards Contract Monitorability
This paper discusses preliminary investigations on the monitorability of contracts for web service descriptions. There are settings where servers do not guarantee statically whether they satisfy some specified contract, which forces the client (i.e., the entity interacting with the server) to perform dynamic checks. This scenario may be viewed as an instance of Runtime Verification, where a per...
متن کاملComponents, Contracts and Vocabularies - Making Dynamic Component Assemblies more Predictable
In recent years, dynamic component-based systems such as OSGi and its derivatives have become very successful. This has created new challenges for verification. Assemblies are created and modified dynamically at runtime, but many existing techniques such as unit testing are designed for buildtime verification. Runtime verification is usually restricted to type checks. We propose a simple compon...
متن کاملColombo: Lightweight middleware for service-oriented computing
F. Curbera M. J. Duftler R. Khalaf W. A. Nagy N. Mukhi S. Weerawarana Colombo is a lightweight platform for developing, deploying, and executing serviceoriented applications. It provides optimized, native runtime support for the serviceoriented-computing model, as opposed to the approach of layering service-oriented applications on a legacy runtime. This approach allows Colombo to provide high ...
متن کاملContracts in the Wild: A Study of Java Programs
The use of formal contracts has long been advocated as an approach to develop programs that are provably correct. However, the reality is that adoption of contracts has been slow in practice. Despite this, the adoption of lightweight contracts — typically utilising runtime checking — has progressed. In the case of Java, built-in features of the language (e.g. assertions and exceptions) can be u...
متن کاملConcurrent Collection as an Operating System Service for Cross-Runtime Cross-Language Memory Management
We present GC-as-a-Service (GaS), a cross-runtime, crosslanguage garbage collection (GC) library that can be used to simplify the implementation of runtime systems, and that exploits available multicore technologies. GaS decouples GC from other runtime components and exposes a fine-grain API for use by GC-cooperative runtimes of different programming languages for heap memory management. GaS pr...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2014